// 引入对应模块接口
const {
  getDatabaseList
} = require('../../../utils/api');
// 引入链接处理工具
const LinkHandler = require('../../../utils/linkHandler');
// index.js
Page({
  data: {
    active: 0,
    activeList: [{
        id: 0,
        name: "视频资料"
      },
      {
        id: 1,
        name: "文件资料"
      },
    ],
    listData: [], // 列表数据
    listDataByType:[],//数据列表根据type区分
    page: 1, // 当前页码
    hasMore: true, // 是否还有更多数据
    loading: false, // 是否正在加载
    isRefreshing: false, // 控制下拉刷新状态

    finalBottomDistance: 0, // 最终底部间距（安全区域 + TabBar 高度）
  },
  onShow() {
    if (typeof this.getTabBar === 'function' &&
      this.getTabBar()) {
      this.getTabBar().setData({
        selected: 1
      })
    }
  },
  onLoad() {
    // 获取全局对象
    const app = getApp();
    // 拿到全局底部间距
    const finalBottomDistance = app.globalData.finalBottomDistance;
    // 存入当前页面数据，供 wxml 使用
    this.setData({
      finalBottomDistance
    });
    // 页面加载时，初始化加载第一页数据
    this.loadData();
  },

  // 下拉刷新
  onRefresh() {
    this.setData({
      isRefreshing: true,
      page: 1,
      hasMore: true,
      listData: []
    });
    this.loadData();
  },

  // 上拉加载
  onReachBottom() {
    if (this.data.loading || !this.data.hasMore) return;
    this.setData({
      page: this.data.page + 1,
      loading: true
    });
    this.loadData();
  },

  // 获取商品列表接口
  async loadData() {
    const {
      page,
      listData,
      isRefreshing
    } = this.data;
    try {
      // 调用接口，传递参数
      let params = {
        page,
        limit: 20,
        type: 3
      }
      const res = await getDatabaseList(params);
      // 接口返回格式：{ code:0, data: [], count: 总数, msg: null }
      // 注意：实际接口的res就是data数组（因为request封装中已返回result = responseData.data）
      const newData = res;
      const totalCount = res.count || 0; // 总条数（从接口回参中获取）
      // 判断是否还有更多数据（当前列表长度 < 总条数时，有更多数据）
      const hasMore = listData.length + newData.length < totalCount;
      // 更新数据：下拉刷新时重置列表，上拉加载时追加列表
      this.setData({
        listData: isRefreshing ? newData : [...listData, ...newData],
        hasMore,
        loading: false,
        isRefreshing: false
      }, () => {
        if (this.data.active == "0") {
          console.log("视频============")
          this.setData({
            listDataByType: this.getListByType("视频")
          })
        } else if (this.data.active == "1") {
          console.log("文件============")
          this.setData({
            listDataByType: this.getListByType("文件")
          })
        }
      });
    } catch (err) {
      // 错误处理（接口失败时）
      console.error('获取资料库列表失败', err);
      this.setData({
        loading: false,
        isRefreshing: false
      });
    }
  },
  onClickTabs(e) {
    const {
      index
    } = e.detail
    this.setData({
      active: index
    },()=>{
      if (index == 0) {
        this.setData({
          listDataByType: this.getListByType("视频")
        })
      } else if (index == 1) {
        this.setData({
          listDataByType: this.getListByType("文件")
        })
      }
    })
  },

  // 根据type获取列表（返回匹配type的数组）
  getListByType(type) {
    const {
      listData
    } = this.data;
    // 若列表为空，返回空数组
    if (!listData.length) return [];

    // 筛选出 type 字段与传入值完全匹配的项（根据实际字段调整，如 type2 可替换）
    return listData.filter(item => item.type === type);
  },

  // 产品项点击事件
  onProductTap(e) {
    const {
      item
    } = e.currentTarget.dataset;
    // 直接调用封装的方法
    if (item.type == "视频") {
      if (item.url == null || item.url == "") {
        wx.showToast({ title:'暂无播放视频', icon: 'none' });
        return
      }
      LinkHandler.handleLink(item.url, {name:item.name});
    } else {
      if (item.url == null || item.url == "") {
        wx.showToast({ title:'暂无资料文件', icon: 'none' });
        return
      }
      LinkHandler.handleLink(item.url);
    }
  }
})